#include "lcd12864.h"
#include "key.h"

// 全局变量：当前速度值 (1-9)
unsigned char speedValue = 5;

// 按键引脚定义（可根据实际硬件修改）
sbit KEY_LEFT  = P3^0;  // 左按键（速度减）
sbit KEY_RIGHT = P3^1;  // 右按键（速度加）

/**
 * @brief 按键扫描函数（带消抖）
 * @return 按键值：0=无按键，1=左键，2=右键
 */
unsigned char key_scan(void) {
    unsigned char key_val = 0;

    if(KEY_LEFT == 0) {  // 检测左按键是否按下
        delay_ms(20);   // 消抖延时
        if(KEY_LEFT == 0) {  // 确认按下
            while(KEY_LEFT == 0);  // 等待按键释放
            key_val = 1;  // 返回左键值
        }
    }
    else if(KEY_RIGHT == 0) {  // 检测右按键是否按下
        delay_ms(20);         // 消抖延时
        if(KEY_RIGHT == 0) {  // 确认按下
            while(KEY_RIGHT == 0);  // 等待按键释放
            key_val = 2;    // 返回右键值
        }
    }

    return key_val;
}

/**
 * @brief 处理速度切换逻辑
 * @param key 按键值（1=左，2=右）
 */
void speed_switch(unsigned char key) {
    if(key == 1) {  // 左按键：速度减
        if(speedValue > 1) {
            speedValue--;  // 速度值减 1
        }
    }
    else if(key == 2) {  // 右按键：速度加
        if(speedValue < 9) {
            speedValue++;  // 速度值加 1
        }
    }

    show_speed_value();  // 更新显示
}